#include <iostream>
#include <type_traits>
class A {};
enum E : int {};
template <typename T> T f(T i) {
  static_assert(std::is_integral<T>::value, "Integral required");
  return i;
}
int main() {
  using namespace std;
  cout << boolalpha;
  cout << is_integral<int>::value;  // true
  cout << is_integral<bool>::value; // true
  cout << is_integral<A>::value;    // false
  cout << is_integral<E>::value;    // false
  cout << f(123);
}
